import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体显示中文
plt.rcParams['axes.unicode_minus'] = False
# 读取数据
data = pd.read_csv('winequality_red.csv')
# 关键列
key_columns = data.columns
# 大画布
plt.figure(figsize=(20, 12))
for i, col in enumerate(key_columns, 1):
    plt.subplot(2, 6, i)  #两行六列
    sns.boxplot(y=data[col], palette='Set1', width=0.5)
    plt.title(col, fontsize=20) #同意标题字体大小
    plt.xticks([])
    plt.ylabel(col, fontsize=20)
# 自动优化布局
plt.tight_layout()
plt.savefig('individual_boxplots.png')
plt.show()

#大画布容纳子图
plt.figure(figsize=(16,14))
#遍历所有行列
for i , col in enumerate(data.columns):
    #四行三列子图布局
    plt.subplot(4,3,i+1)
    sns.histplot(data[col],kde=True,bins=30,color='blue')
    plt.title(f'5.1 {col} 分布：峰度, 偏态直观展示')
    #添加x轴标签
    plt.xlabel(col)
    plt.xticks(rotation=45, ha='right', fontsize=6)
#避免子图重叠
plt.tight_layout()
plt.savefig('histogram.png')
plt.show()